約 4,483,221 件
https://w.atwiki.jp/takumi-memo/pages/53.html
Purpose of this Module Type Component Import plugin Moduleは、Conponentがランタイムにアップグレードされても、他のpluginsによって共有されるJava Componentにアクセスすることを可能にします。 Configuration Component Import plugin Moduleのroot elementはcomponent-importです。 次の属性と子エレメントを持ちます。 Attribute Name Required Description Interface * コンポーネントをインポートするためのJava Interface。この属性は、インターフェイスが使われなかったときのみ要求される。 key * plugin moduleの識別子。keyはユニークである必要がある。 filter The LDAP filter to use to match public components (OSGi services). Note The format of the filter must be a valid LDAP filter. (Plugin Framework 2.3 and later.) Element interface * The Java interface under which the component to retrieve is registered. This element can appear zero or more times, but is required if the interface attribute is not used. Example 1つのコンポーネントのインポートを含むコード片。 atlassian-plugin name="Hello World" key="example.plugin.helloworld" plugins-version="2" plugin-info description A basic component import module test /description vendor name="Atlassian Software Systems" url="http //www.atlassian.com"/ version 1.0 /version /plugin-info component-import key="helloWorldService" interface com.myapp.HelloWorldService /interface /component-import /atlassian-plugin 異なるpluginによって利用可能になったコンポーネントを消費します。 atlassian-plugin name="Hello World Provider" key="example.plugin.helloworld.provider" plugins-version="2" plugin-info description A basic component module test /description vendor name="Atlassian Software Systems" url="http //www.atlassian.com"/ version 1.0 /version /plugin-info component key="helloWorldService" class="com.myapp.internal.MyHelloWorldService" public="true" interface com.myapp.HelloWorldService /interface /component /atlassian-plugin LDAPフィルターの例 component-import key="dictionaryService" interface="com.myapp.DictionaryService" filter="(language=English)" /
https://w.atwiki.jp/sampleisbest/pages/591.html
開発環境 Microsoft Visual Studio Community 2019 実行環境 Microsoft Windows 10 Home (64bit) プロジェクト テンプレート C++ 空のプロジェクト プロジェクト名 dx11sample1 dx11sample1.cpp #pragma comment(lib, "d3d11") #pragma comment(lib, "d3dcompiler") #include Windows.h #include wrl.h #include d3d11.h #include d3dcompiler.h #include DirectXMath.h using namespace Microsoft WRL; using namespace DirectX; struct SimpleVertex { XMFLOAT3 Pos; XMFLOAT3 Color; }; struct ConstantBuffer { XMMATRIX mWorld; }; ComPtr ID3D11Device g_pDevice; ComPtr ID3D11DeviceContext g_pContext; ComPtr IDXGISwapChain g_pSwapChain; ComPtr ID3D11RenderTargetView g_pRenderTargetView; ComPtr ID3D11VertexShader g_pVertexShader; ComPtr ID3D11PixelShader g_pPixelShader; ComPtr ID3D11InputLayout g_pVertexLayout; ComPtr ID3D11Buffer g_pVertexBuffer; ComPtr ID3D11Buffer g_pConstantBuffer; float g_theta = 0; // 関数宣言 HWND InitWindow(HINSTANCE hInst); HRESULT InitDevice(HWND hWnd); void CleanupDevice(); LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); void Render(); int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int nCmdShow) { HWND hWnd = InitWindow(hInstance); if (!hWnd) return -1; if (FAILED(InitDevice(hWnd))) { CleanupDevice(); return -1; } ShowWindow(hWnd, nCmdShow); MSG msg = { 0 }; while (msg.message != WM_QUIT) { if (PeekMessage( msg, nullptr, 0, 0, PM_REMOVE)) { TranslateMessage( msg); DispatchMessage( msg); } else { Render(); } } CleanupDevice(); return msg.wParam; } HWND InitWindow(HINSTANCE hInst) { WNDCLASSEX wc = { sizeof WNDCLASSEX }; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.hInstance = hInst; wc.hCursor = LoadCursor(nullptr, IDC_ARROW); wc.hbrBackground = HBRUSH(COLOR_WINDOW + 1); wc.lpszClassName = L"dx11sample1"; if (!RegisterClassEx( wc)) return nullptr; DWORD dwStyle = WS_OVERLAPPEDWINDOW; RECT rc = { 0, 0, 400, 400 }; AdjustWindowRect( rc, dwStyle, FALSE); HWND hWnd = CreateWindow( wc.lpszClassName, L"dx11sample1", dwStyle, CW_USEDEFAULT, 0, rc.right - rc.left, rc.bottom - rc.top, nullptr, nullptr, hInst, nullptr); return hWnd; } HRESULT CompileShaderFromFile( LPCWSTR szFileName, LPCSTR szEntryPoint, LPCSTR szShaderModel, ID3DBlob** ppBlobOut) { DWORD dwShaderFlags = D3DCOMPILE_ENABLE_STRICTNESS; ComPtr ID3DBlob pErrorBlob; HRESULT hr = D3DCompileFromFile(szFileName, nullptr, nullptr, szEntryPoint, szShaderModel, dwShaderFlags, 0, ppBlobOut, pErrorBlob); if (FAILED(hr)) { if (pErrorBlob) { OutputDebugStringA((LPCSTR)pErrorBlob- GetBufferPointer()); } return hr; } return S_OK; } HRESULT InitDevice(HWND hWnd) { HRESULT hr; UINT width = 400; UINT height = 400; DXGI_SWAP_CHAIN_DESC sd = { 0 }; sd.BufferDesc.Width = width; sd.BufferDesc.Height = height; sd.BufferDesc.RefreshRate.Numerator = 60; sd.BufferDesc.RefreshRate.Denominator = 1; sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;// 符号なし正規化整数 sd.SampleDesc.Count = 1; sd.SampleDesc.Quality = 0; sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; sd.BufferCount = 1; sd.OutputWindow = hWnd; sd.Windowed = TRUE; sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; D3D_FEATURE_LEVEL featureLevel; hr = D3D11CreateDeviceAndSwapChain( nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr, 0, nullptr, 0, D3D11_SDK_VERSION, sd, g_pSwapChain, g_pDevice, featureLevel, g_pContext); // レンダーターゲットビュー ComPtr ID3D11Texture2D pBackBuffer; hr = g_pSwapChain- GetBuffer(0, IID_PPV_ARGS( pBackBuffer)); if (FAILED(hr)) return hr; hr = g_pDevice- CreateRenderTargetView(pBackBuffer.Get(), nullptr, g_pRenderTargetView); if (FAILED(hr)) return hr; g_pContext- OMSetRenderTargets(1, g_pRenderTargetView.GetAddressOf(), nullptr); // ビューポート D3D11_VIEWPORT vp = { 0 }; vp.Width = (FLOAT)width; vp.Height = (FLOAT)height; vp.MinDepth = 0; vp.MaxDepth = 1; g_pContext- RSSetViewports(1, vp); // 頂点シェーダ ComPtr ID3DBlob pVSBlob; hr = CompileShaderFromFile(L"dx11sample1.fx", "VS", "vs_5_0", pVSBlob); if (FAILED(hr)) { return hr; } hr = g_pDevice- CreateVertexShader( pVSBlob- GetBufferPointer(), pVSBlob- GetBufferSize(), nullptr, g_pVertexShader); if (FAILED(hr)) return hr; // ピクセルシェーダ ComPtr ID3DBlob pPSBlob; hr = CompileShaderFromFile(L"dx11sample1.fx", "PS", "ps_5_0", pPSBlob); if (FAILED(hr)) { return hr; } hr = g_pDevice- CreatePixelShader( pPSBlob- GetBufferPointer(), pPSBlob- GetBufferSize(), nullptr, g_pPixelShader); if (FAILED(hr)) return hr; // g_pContext- IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); // 入力レイアウト D3D11_INPUT_ELEMENT_DESC layout[] = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "COLOR", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 }, }; hr = g_pDevice- CreateInputLayout(layout, ARRAYSIZE(layout), pVSBlob- GetBufferPointer(), pVSBlob- GetBufferSize(), g_pVertexLayout); if (FAILED(hr)) return hr; g_pContext- IASetInputLayout(g_pVertexLayout.Get()); // 頂点バッファ SimpleVertex vertices[] = { { XMFLOAT3(0, 0, 1), XMFLOAT3(0, 0, 1) }, { XMFLOAT3(0, 1, 0), XMFLOAT3(0, 1, 0) }, { XMFLOAT3(1, 0, 0), XMFLOAT3(1, 0, 0) }, }; D3D11_BUFFER_DESC vb = { 0 }; vb.ByteWidth = sizeof vertices; vb.Usage = D3D11_USAGE_DEFAULT; vb.BindFlags = D3D11_BIND_VERTEX_BUFFER; D3D11_SUBRESOURCE_DATA InitData = { 0 }; InitData.pSysMem = vertices; hr = g_pDevice- CreateBuffer( vb, InitData, g_pVertexBuffer); if (FAILED(hr)) return hr; UINT stride = sizeof SimpleVertex; UINT offset = 0; g_pContext- IASetVertexBuffers(0, 1, g_pVertexBuffer.GetAddressOf(), stride, offset); // 定数バッファ D3D11_BUFFER_DESC cb = { 0 }; cb.ByteWidth = sizeof ConstantBuffer; cb.Usage = D3D11_USAGE_DEFAULT; cb.BindFlags = D3D11_BIND_CONSTANT_BUFFER; hr = g_pDevice- CreateBuffer( cb, nullptr, g_pConstantBuffer); if (FAILED(hr)) return hr; return S_OK; } void CleanupDevice() { if (g_pContext) { g_pContext- ClearState(); } } LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; switch (uMsg) { case WM_PAINT hdc = BeginPaint(hWnd, ps); EndPaint(hWnd, ps); break; case WM_DESTROY PostQuitMessage(0); break; default return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; } void Render() { XMMATRIX world = XMMatrixRotationZ(g_theta); // float ClearColor[4] = { 0, 0, 0, 1 }; g_pContext- ClearRenderTargetView(g_pRenderTargetView.Get(), ClearColor); ConstantBuffer cb; //cb.mWorld = XMMatrixTranspose(world); cb.mWorld = world; g_pContext- UpdateSubresource(g_pConstantBuffer.Get(), 0, nullptr, cb, 0, 0); g_pContext- VSSetShader(g_pVertexShader.Get(), nullptr, 0); g_pContext- VSSetConstantBuffers(0, 1, g_pConstantBuffer.GetAddressOf()); g_pContext- PSSetShader(g_pPixelShader.Get(), nullptr, 0); g_pContext- Draw(3, 0); g_pSwapChain- Present(1, 0); // g_theta += 0.01f; } dx11sample1.fx cbuffer ConstantBuffer register(b0) { matrix World; }; struct VS_INPUT { float4 Pos POSITION; float4 Color COLOR; }; struct PS_INPUT { float4 Pos SV_Position; float4 Color COLOR; }; // Vertex Shader PS_INPUT VS(VS_INPUT input) { PS_INPUT output = (PS_INPUT)0; output.Pos = mul(World, input.Pos); output.Color = input.Color; return output; } // Pixel Shader float4 PS(PS_INPUT input) SV_Target { return input.Color; }
https://w.atwiki.jp/sampleisbest/pages/590.html
開発環境 Microsoft Visual Studio Community 2019 実行環境 Microsoft Windows 10 Home (64bit) プロジェクト テンプレート C++ 空のプロジェクト プロジェクト名 dx11sample2 dx11sample2.cpp #pragma comment(lib, "d3d11") #pragma comment(lib, "d3dcompiler") #include Windows.h #include wrl.h #include d3d11.h #include d3dcompiler.h #include DirectXMath.h #define HLSL_FILE L"dx11sample2.fx" using namespace Microsoft WRL; using namespace DirectX; struct ConstantBuffer { float frame; float f1, f2, f3;// filler }; // 外部変数 ComPtr ID3D11Device g_pDevice; ComPtr ID3D11DeviceContext g_pContext; ComPtr IDXGISwapChain g_pSwapChain; ComPtr ID3D11RenderTargetView g_pRenderTargetView; ComPtr ID3D11VertexShader g_pVertexShader; ComPtr ID3D11PixelShader g_pPixelShader; ComPtr ID3D11Buffer g_pConstantBuffer; float g_frame = 0; // 関数宣言 HWND InitWindow(HINSTANCE hInst); HRESULT InitDevice(HWND hWnd); void CleanupDevice(); LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); void Render(); int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int nCmdShow) { HWND hWnd = InitWindow(hInstance); if (!hWnd) return -1; if (FAILED(InitDevice(hWnd))) { CleanupDevice(); return -1; } ShowWindow(hWnd, nCmdShow); MSG msg = { 0 }; while (msg.message != WM_QUIT) { if (PeekMessage( msg, nullptr, 0, 0, PM_REMOVE)) { TranslateMessage( msg); DispatchMessage( msg); } else { Render(); } } CleanupDevice(); return int(msg.wParam); } HWND InitWindow(HINSTANCE hInst) { WNDCLASSEX wc = { sizeof WNDCLASSEX }; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.hInstance = hInst; wc.hCursor = LoadCursor(nullptr, IDC_ARROW); wc.hbrBackground = HBRUSH(COLOR_WINDOW + 1); wc.lpszClassName = L"dx11sample2"; if (!RegisterClassEx( wc)) return nullptr; DWORD dwStyle = WS_OVERLAPPEDWINDOW; RECT rc = { 0, 0, 400, 400 }; AdjustWindowRect( rc, dwStyle, FALSE); HWND hWnd = CreateWindow( wc.lpszClassName, L"dx11sample2", dwStyle, CW_USEDEFAULT, 0, rc.right - rc.left, rc.bottom - rc.top, nullptr, nullptr, hInst, nullptr); return hWnd; } HRESULT CompileShaderFromFile( LPCWSTR szFileName, LPCSTR szEntryPoint, LPCSTR szShaderModel, ID3DBlob** ppBlobOut) { DWORD dwShaderFlags = D3DCOMPILE_ENABLE_STRICTNESS; ComPtr ID3DBlob pErrorBlob; HRESULT hr = D3DCompileFromFile(szFileName, nullptr, nullptr, szEntryPoint, szShaderModel, dwShaderFlags, 0, ppBlobOut, pErrorBlob); if (FAILED(hr)) { if (pErrorBlob) { OutputDebugStringA((LPCSTR)pErrorBlob- GetBufferPointer()); } return hr; } return S_OK; } HRESULT InitDevice(HWND hWnd) { HRESULT hr; RECT rc; GetClientRect(hWnd, rc); UINT width = rc.right - rc.left; UINT height = rc.bottom - rc.top; DXGI_SWAP_CHAIN_DESC sd = { 0 }; sd.BufferDesc.Width = width; sd.BufferDesc.Height = height; sd.BufferDesc.RefreshRate.Numerator = 60; sd.BufferDesc.RefreshRate.Denominator = 1; sd.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;// 符号なし正規化整数 sd.SampleDesc.Count = 1; sd.SampleDesc.Quality = 0; sd.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; sd.BufferCount = 1; sd.OutputWindow = hWnd; sd.Windowed = TRUE; sd.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; D3D_FEATURE_LEVEL featureLevel; hr = D3D11CreateDeviceAndSwapChain( nullptr, D3D_DRIVER_TYPE_HARDWARE, nullptr, 0, nullptr, 0, D3D11_SDK_VERSION, sd, g_pSwapChain, g_pDevice, featureLevel, g_pContext); if (FAILED(hr)) return hr; // レンダーターゲットビュー ComPtr ID3D11Texture2D pBackBuffer; hr = g_pSwapChain- GetBuffer(0, IID_PPV_ARGS( pBackBuffer)); if (FAILED(hr)) return hr; hr = g_pDevice- CreateRenderTargetView(pBackBuffer.Get(), nullptr, g_pRenderTargetView); if (FAILED(hr)) return hr; g_pContext- OMSetRenderTargets(1, g_pRenderTargetView.GetAddressOf(), nullptr); // ビューポート D3D11_VIEWPORT vp = { 0 }; vp.Width = (FLOAT)width; vp.Height = (FLOAT)height; vp.MinDepth = 0; vp.MaxDepth = 1; g_pContext- RSSetViewports(1, vp); // 頂点シェーダ ComPtr ID3DBlob pVSBlob; hr = CompileShaderFromFile(HLSL_FILE, "VS", "vs_5_0", pVSBlob); if (FAILED(hr)) { return hr; } hr = g_pDevice- CreateVertexShader( pVSBlob- GetBufferPointer(), pVSBlob- GetBufferSize(), nullptr, g_pVertexShader); if (FAILED(hr)) return hr; // ピクセルシェーダ ComPtr ID3DBlob pPSBlob; hr = CompileShaderFromFile(HLSL_FILE, "PS", "ps_5_0", pPSBlob); if (FAILED(hr)) { return hr; } hr = g_pDevice- CreatePixelShader( pPSBlob- GetBufferPointer(), pPSBlob- GetBufferSize(), nullptr, g_pPixelShader); if (FAILED(hr)) return hr; // 定数バッファ D3D11_BUFFER_DESC cb = { 0 }; cb.ByteWidth = sizeof ConstantBuffer; cb.Usage = D3D11_USAGE_DEFAULT; cb.BindFlags = D3D11_BIND_CONSTANT_BUFFER; hr = g_pDevice- CreateBuffer( cb, nullptr, g_pConstantBuffer); if (FAILED(hr)) return hr; return S_OK; } void CleanupDevice() { if (g_pContext) { g_pContext- ClearState(); } } LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { PAINTSTRUCT ps; HDC hdc; switch (uMsg) { case WM_PAINT hdc = BeginPaint(hWnd, ps); EndPaint(hWnd, ps); break; case WM_DESTROY PostQuitMessage(0); break; default return DefWindowProc(hWnd, uMsg, wParam, lParam); } return 0; } void Render() { float ClearColor[4] = { 0, 0, 0, 1 }; g_pContext- ClearRenderTargetView(g_pRenderTargetView.Get(), ClearColor); ConstantBuffer cb; cb.frame = g_frame; g_pContext- UpdateSubresource(g_pConstantBuffer.Get(), 0, nullptr, cb, 0, 0); g_pContext- VSSetShader(g_pVertexShader.Get(), nullptr, 0); g_pContext- VSSetConstantBuffers(0, 1, g_pConstantBuffer.GetAddressOf()); g_pContext- PSSetShader(g_pPixelShader.Get(), nullptr, 0); // dx11sample2.fx g_pContext- IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); g_pContext- Draw(3, 0); // dx11sample2b.fx //g_pContext- IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP); //g_pContext- Draw(18, 0); g_pSwapChain- Present(1, 0); // g_frame++; } dx11sample2.fx cbuffer ConstantBuffer register(b0) { float frame; }; struct VS_INPUT { uint vid SV_VertexID; }; struct PS_INPUT { float4 Pos SV_Position; float4 Color COLOR; }; // Vertex Shader PS_INPUT VS(VS_INPUT input) { PS_INPUT output = (PS_INPUT)0; float2 coord = float2((input.vid 1) 1, input.vid 1); float2 pos = coord - 0.5; float rad = radians(frame); float c = cos(rad); float s = sin(rad); pos = float2(pos.x * c - pos.y * s, pos.x * s + pos.y * c); output.Pos = float4(pos, 0, 1); output.Color = float4(coord, 1, 1); return output; } // Pixel Shader float4 PS(PS_INPUT input) SV_Target { return input.Color; } dx11sample2b.fx +... cbuffer ConstantBuffer register(b0) { float frame; }; struct VS_INPUT { uint vid SV_VertexID; }; struct PS_INPUT { float4 Pos SV_Position; float4 Coord TEXCOORD; }; matrix rotationX(float angle) { float c = cos(angle); float s = sin(angle); return matrix( 1, 0, 0, 0, 0, c, -s, 0, 0, s, c, 0, 0, 0, 0, 1); } matrix rotationY(float angle) { float c = cos(angle); float s = sin(angle); return matrix( c, 0, s, 0, 0, 1, 0, 0, -s, 0, c, 0, 0, 0, 0, 1); } matrix rotationZ(float angle) { float c = cos(angle); float s = sin(angle); return matrix( c, -s, 0, 0, s, c, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); } static uint vertices[] = { 3,1,2,0, 0,4,2,6,3,7,1,5,0,4, 4,5,6,7 }; // Vertex Shader PS_INPUT VS(VS_INPUT input) { PS_INPUT output = (PS_INPUT)0; uint vtx = vertices[input.vid]; float3 coord = float3(vtx 1, (vtx 1) 1, (vtx 2) 1); float4 pos = float4((coord - 0.5) * float3(0.4, 0.8, 0.2), 1); matrix mWorld = mul(rotationY(radians(frame)), rotationX(radians(70.0))); output.Pos = mul(mWorld, pos); output.Pos.z += 0.5; output.Coord = float4(coord, 1); return output; } // Pixel Shader float4 PS(PS_INPUT input) SV_Target { float3 edge = step(0.48, abs(input.Coord.xyz - 0.5)); if (length(edge) 1.0) { return float4(0.5, 0.5, 0.5, 1); } return input.Coord; }
https://w.atwiki.jp/dslua/pages/28.html
canvas controls DateTime debug fonts images maps Rumble Sound timers
https://w.atwiki.jp/sampleisbest/pages/555.html
開発環境 Microsoft Visual Studio Community 2017 実行環境 Microsoft Windows 10 Home (64bit) プロジェクトの種類 Visual C++/空のプロジェクト プロジェクト名 FontSample FontSample.cpp // Unicode文字セット #include Windows.h #include windowsx.h #include set #include string #include "Resource.h" using namespace std; typedef set wstring STRLIST; // 関数プロトタイプ宣言 INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); void OnInitDialog(HWND hDlg); void OnDrawItem(LPARAM lParam); int CALLBACK EnumFontFamExProc(const LOGFONT *lpelfe, const TEXTMETRIC *lpntme, DWORD FontType, LPARAM lParam); void Redraw(); // 外部変数 STRLIST facenames; HWND hMainDlg; int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) { DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAINDLG), NULL, DlgProc); return 0; } INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { INT_PTR ret = TRUE; switch (uMsg) { case WM_DRAWITEM OnDrawItem(lParam); break; case WM_COMMAND WORD cid; cid = LOWORD(wParam); switch (cid) { case IDC_FACENAME switch (HIWORD(wParam)) { case LBN_SELCHANGE Redraw(); break; } break; case IDOK Redraw(); break; case IDCANCEL EndDialog(hDlg, LOWORD(wParam)); break; default ret = FALSE; } break; case WM_INITDIALOG hMainDlg = hDlg; OnInitDialog(hDlg); return FALSE; default ret = FALSE; } return ret; } void OnInitDialog(HWND hDlg) { SetDlgItemText(hDlg, IDC_SAMPLE, L"東京都千代○区\r\n永○町1丁目10ー1\r\n\r\n図書 館太郎様\r\n 花子様\r\n1ー1-1―-"); SetDlgItemText(hDlg, IDC_HEIGHT, L"50"); HDC hdc = GetDC(NULL); LOGFONT lf = { 0 }; lf.lfCharSet = DEFAULT_CHARSET; EnumFontFamiliesEx(hdc, lf, EnumFontFamExProc, 0, 0); ReleaseDC(NULL, hdc); HWND hList = GetDlgItem(hDlg, IDC_FACENAME); for (auto e facenames) { ListBox_AddString(hList, e.c_str()); } ListBox_SetCurSel(hList, 0); } void OnDrawItem(LPARAM lParam) { LPDRAWITEMSTRUCT pdi = (LPDRAWITEMSTRUCT)lParam; HDC hdc = pdi- hDC; RECT rcView; GetClientRect(pdi- hwndItem, rcView); FillRect(hdc, rcView, GetSysColorBrush(COLOR_WINDOW)); // 書体名 wchar_t facename[256]; HWND hList = GetDlgItem(hMainDlg, IDC_FACENAME); int index = ListBox_GetCurSel(hList); ListBox_GetText(hList, index, facename); bool vert = (facename[0] == L @ ); // 例文 wchar_t buf[256]; GetDlgItemText(hMainDlg, IDC_SAMPLE, buf, _countof(buf)); // フォントの高さ BOOL trans; int height = GetDlgItemInt(hMainDlg, IDC_HEIGHT, trans, TRUE); if (trans == FALSE) { trans = 10; } // フォント作成 LOGFONT lf = { 0 }; lf.lfCharSet = DEFAULT_CHARSET; lf.lfEscapement = (vert ? 2700 0); //lf.lfOrientation = 2700; lf.lfHeight = height; wcscpy_s(lf.lfFaceName, facename); HFONT hFont = CreateFontIndirect( lf); HGDIOBJ hFontOld = SelectObject(hdc, hFont); if (vert) { LPTSTR p = buf; for (int x = rcView.right; ; x -= abs(height)) { LPTSTR n = wcsstr(p, L"\r\n"); if (n) { *n = 0; TextOut(hdc, x, 0, p, wcslen(p)); p = n + 2; } else { TextOut(hdc, x, 0, p, wcslen(p)); break; } } } else { DrawText(hdc, buf, -1, rcView, 0); } SelectObject(hdc, hFontOld); DeleteObject(hFont); } int CALLBACK EnumFontFamExProc(const LOGFONT *lpelfe, const TEXTMETRIC *lpntme, DWORD FontType, LPARAM lParam) { if (facenames.find(lpelfe- lfFaceName) == facenames.end()) { facenames.insert(lpelfe- lfFaceName); } return TRUE; } void Redraw() { RedrawWindow(GetDlgItem(hMainDlg, IDC_PREVIEW), NULL, NULL, RDW_INVALIDATE); } Resource.h #define IDD_MAINDLG100 #define IDC_FACENAME101 #define IDC_SAMPLE102 #define IDC_HEIGHT103 #define IDC_PREVIEW104 #define IDC_STATIC-1 FontSample.rc #include windows.h #include "resource.h" IDD_MAINDLG DIALOGEX 100, 100, 480, 500 //STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_CENTER | WS_SYSMENU | WS_MINIMIZEBOX CAPTION "Font Sample" FONT 9, "MS UI Gothic" BEGIN LISTBOXIDC_FACENAME,10,10,150,400,WS_TABSTOP | WS_VSCROLL EDITTEXTIDC_SAMPLE,10,420,150,45,ES_MULTILINE | WS_VSCROLL LTEXT"Font Height ",IDC_STATIC,10,475,50,14 EDITTEXTIDC_HEIGHT,50,475,50,14, DEFPUSHBUTTON"OK",IDOK,110,475,50,14,WS_GROUP LTEXT"",IDC_PREVIEW,170,10,300,400,WS_BORDER | SS_OWNERDRAW END
https://w.atwiki.jp/tdnki/pages/43.html
2. nativeコードへの移行 前回のコードによる描画処理には、Xperia VLで50ms~70ms程度かかっていた(15~20fps)。 これからさらに重い画像処理を追加しながらも、30fps程度は実現したいため、 C/C++による実装に切り替えて高速化を図っていく。 前回、Javaで書いたpreviewBufferRgbaを書き込む処理を、C++で置き換えることを目標とする。 2-1. nativeサポートの追加 プロジェクト上で右クリックし、[Android Tools] [Add Native Support...] を選択する。 適当なライブラリ名を入力して決定すると、プロジェクトルートにjniフォルダが作成される。 以降、ツールバーのとんかちのアイコンや、プロジェクトのビルドのタイミングでnativeコードがビルドされる。 早速ビルドしてみようととんかちを押すと、次の警告が出る。 APP_PLATFORM android-** is larger than android minSdkVersion ** in ./AndroidManifest.xml 自動で設定されたnativeコードのターゲットが、アプリ側で設定したminSdkVersionより大きいことを示す警告で、 アプリ側ではエラーとして扱われる。 jniフォルダにApplication.mkファイルを追加し、minSdkVersionを超えない値をターゲットとすることで解決できる。 Application.mk APP_PLATFORM = android-8 2-2. native関数を呼ぶ準備 関数を呼びたいクラスに、関数定義と、staticイニシャライザでsoを読み込む処理を追加する。 MainActivity.java private native boolean processImage(byte[] src, int[] dst, int width, int height); static { System.loadLibrary("ComicFinder"); } 次にヘッダファイルを作成する。 自分で書こうとすると、何らかのミスで実行時にUnsatisfiedLinkErrorが出るのがオチなので、javahで自動生成しておきたい。 コマンドは次のようになるか。(カレントがプロジェクトルートであることを想定) javah -classpath ".\bin\classes; android-sdkのパス \platforms\android-14\data\layoutlib.jar" -o .\jni\ComicFinder.hpp com.example.comicfinder.MainActivity ヘッダファイルができたら、実体もコーディングする。 ひとまずは呼び出しが上手くいくかを確認したいため、空の関数を書いておく。 ComicFinder.cpp #include "ComicFinder.hpp" JNIEXPORT bool JNICALL Java_com_example_comicfinder_MainActivity_processImage (JNIEnv *env, jobject me, jbyteArray src, jintArray dst, jint width, jint height) { return false; } アプリ側で呼び出し。 MainActivity.java private void updateFrame(byte[] data) { processImage(data, previewBufferRgba, previewSize.width, previewSize.height); これを実行してエラーが起きなければ成功。 2-3. 関数の実装 GetPrimitiveArrayCritical()で、Javaの配列にnative側から触れるポインタが取得できる。 ComicFinder.cpp #include stdlib.h #include "ComicFinder.hpp" JNIEXPORT bool JNICALL Java_com_example_comicfinder_MainActivity_processImage (JNIEnv *env, jobject me, jbyteArray src, jintArray dst, jint width, jint height) { unsigned char *p_src = reinterpret_cast unsigned char * (env- GetPrimitiveArrayCritical(src, NULL)); if (NULL == p_src) { return false; } unsigned char *p_dst = reinterpret_cast unsigned char * (env- GetPrimitiveArrayCritical(dst, NULL)); if (NULL == p_dst) { env- ReleasePrimitiveArrayCritical(src, p_src, 0); return false; } for (int k = 0; k width*height; k++) { p_dst[k*4+0] = p_dst[k*4+1] = p_dst[k*4+2] = p_src[k]; p_dst[k*4+3] = 0xff; } env- ReleasePrimitiveArrayCritical(dst, p_dst, 0); env- ReleasePrimitiveArrayCritical(src, p_src, 0); return true; } 2-4. 目標達成 描画処理の時間は30ms程度となった。 が、複雑な画像処理をしていないにも関わらず、すでに30fpsぎりぎりである。 画像処理自体は5msで終わっているため、Surfaceへの描画が完全にボトルネックとなっている。 まずこちらの処理の高速化や並列化を検討する必要があるかもしれない。 ここまでのソース ComicFinder.zip
https://w.atwiki.jp/mc3hana/
Mission Completeは2008年10月2日に命名された女性音楽グループである。 レーベルはFor Music 事務所はNOB。 概要 同じクラスの女3人が集まって結成された音楽グループ 同じ班だった咲燦花ききょうと雛霞寺椿が掃除中、同クラスの男子がまだ一学期中でもあるに関わらず 別れを惜しむような発言をしており、「もう泣きたいよ~」とその男子が言った瞬間、咲燦花がじゃあサヨナラのワンフレーズを 即興で歌ったのが、キッカケである。 それからもうサヨナラの歌詞製作中、どうしても埋まらない四文字の歌詞があり、文才がある日向紗月に聞いてみよう! ということになり、日向の歌詞が採用され、晴れてグループ入りとなった。 それから次々と曲を製作。 次第にクラスに広まっていく。 当初のグループ名はLC2だったが、2008年10月2日に現在のグループ名、Mission Completeとなった。 メンバー 咲燦花 ききょう(さざんかききょう、9月24日-、A型)リーダー・メインボーカル 日向 紗月(ひゅうがさつき、7月7日-、A型)キーボード・コーラス 雛霞寺椿(ひなげしつばき、11月18日-、B型)レコーディング・MA
https://w.atwiki.jp/gyakusai/pages/155.html
Ace Attorney Investigations Miles Edgeworth Preview for the Nintendo DS from 1UP.comhttp //www.1up.com/do/previewPage?cId=3177783 p=39 sec=PREVIEWS 02/02/2010 1UP Mr. Eshiro, you re the producer on Ace Attorney Investigations, but could you tell us a little more about your role in the game s development?1UP:江城さんは逆転検事のプロデューサーですが、もうちょっとこのゲームでの役割について教えてください。Motohide Eshiro I started as co-producer on the second and third Ace Attorney games, but this is my first time in the series as full producer. Mostly, I look over the overall product schedule and budget. I make sure everything s coming in on time -- things like that.江城元秀:逆転裁判との関わりは、DS版逆転裁判2と3の共同プロデューサーとしての役割が始まりですが、これはプロデューサーとしての初めての仕事でもありました。大まかには、私は全てのスケジュールと予算・経費を統括します。全てが予定通りに動くかを確認します。Another big part of my job is focusing on the overall quality of the game. While the director focuses on specific aspects -- fine-tuning the small details -- my job is more to look at the big picture. To make sure that everything fits in well with whole concept. I look at it like the average user and ask myself, Will the player enjoy this? 他の大きな仕事としては、ゲームの全ての質に焦点を当てています。ディレクターがある局面――細かい部分の微調整――に集中している時、私の仕事は全体を見ることです。全ての事象が、全体と調和しているかの確認です。私は1ユーザーとしてゲームを見て、私自身に確認します。「プレイヤーはこれを楽しいと思うだろうか?」And of course, doing promotion for the game, like traveling abroad to give interviews.そしてもちろん、ゲームの宣伝もします。海外に出向いてインタビューを受けたり。1UP Your current position sounds very different from your previous role as director on Shadow of Rome and Onimusha...1UP:あなたの現在の仕事は、以前のSHADOW OF ROMEや鬼武者のディレクターとしての役割とずいぶん異なるようですが。ME Yeah, Ace Attorney is a very different type of game, but I really wasn t thinking of it as something completely different. During my school days, I used to play a lot of PC-based text adventures. I really loved those back then, and I ve always been a huge fan of adventure games.江城:ええ、逆転裁判はゲームとしては異なるタイプですが、私は完全に異なるものとは思っていません。私は学生時代、PCでテキストアドベンチャーを多くプレイしたものです。私はそういうゲームが好きで、アドベンチャーゲームの大ファンでした。When I was a director, I was able to make action games like Onimusha and Shadow of Rome, but I just didn t have the opportunity to make my own adventure game. But when I switched roles to producer on Ace Attorney, I finally got the chance to make the types of games I loved playing when I was younger.私はディレクターとして、アクションゲームの鬼武者とSHADOW OF ROMEを制作しましたが、アドベンチャーゲームを創る機会はありませんでした。しかし逆転裁判のプロデューサーになって、とうとうアドベンチャーゲームの制作に関われることになったのです。1UP Do you think your time working with such action heavy games has changed the way you approached Ace Attorney Investigations?1UP:そのようなアクションゲームの仕事を制作していた時から比べ、逆転検事へのアプローチには変化がありましたか?ME Definitely, there s been some influence. Of course, in text-based games there s always some level of interactivity. But working in action games, I had firsthand experience in how to lay out a scene. For example, if you ve got a character moving somewhere, the background has to scroll and move smoothly.江城:確かに、少しは影響がありました、もちろん、テキストベースのゲームでは、常にそれなりの会話があります。しかしアクションゲームの制作では、私はシーン毎のレイアウトをどうするかといったことを経験しました。例えば、キャラクターをどこかに動かす時、背景はなめらかにスクロールしなければなりません。I think I was able to transfer some of that experience into Ace Attorney Investigations. When you move Edgeworth around, you re not going to run into weird scrolling issues; you re not going to see awkward movements, or things like that, and I attribute that to my action game experience.そういった経験を、逆転検事に生かすことができたと思います。あなたがプレイした時、御剣を動かしても妙なスクロールを見たり、ぎこちない動きを見たりすることはないでしょう。そういったことは、アクションゲームの制作による経験からだと考えています。1UP Speaking of adventure games, over the past few years in America, we ve seen a bit of a revival of that genre with games like Sam Max and Monkey Island. Do those come to Japan at all?1UP:アドベンチャーゲームについてですが、アメリカでは過去、Sam MaxやMonkey Islandのようなゲームがリバイバルしています。日本ではどうですか?ME I don t think they do. But when I think about PC adventure games, I think about the really old titles. Of course, Myst was a popular title everywhere, but I really enjoyed Mystery House. I can t think of other specific titles right at the moment, but just really old games, or games like Portopia, which never came out outside Japan. I really haven t tried out any recent adventure games. Even in Japan, they ve never remade some of my favorite titles, like Snatcher.江城:日本ではなかったと思います。しかし、私がPCのアドベンチャーゲームについて考える時、私は本当に古いタイトルについて思いを巡らせます。もちろん、Mystは有名ですが、私はMystery Houseが楽しかった。他の具体的なタイトルは思い出せないけれど、日本以外では発売されなかったポートピア連続殺人事件が好きです。私は最近のアドベンチャーゲームはプレイしていません。日本でさえ、スナッチャーのような私の好きなゲームのいくつかはリメイクされていません。With Mystery House, that was a game I played when I was still in college -- but it only came out in English. I didn t immediately understand half of what was written; maybe just a word like take, and then I d have to look up the rest to understand what I was able to take. So I d play along with a dictionary; it was almost like studying, but a lot more fun.Mystery Houseは、私が大学生のころにプレイしたゲームでした――しかし英語版しかありませんでした。私は書いてあることの半分も理解できませんでした。「take」というワードがあっても、何が取得できるのか、調べなくてはなりませんでした。そのため、私は辞書を片手にプレイしていました、それはまるで勉強みたいでしたが、楽しみでもありました。But Portopia is a game that s really stuck with me over the years. Are you ok with spoilers?しかし、ポートピア連続殺人事件は長年楽しく遊べたゲームです。ネタバレは大丈夫?1UP I think the game s old enough that that s ok.1UP:昔のゲームだから大丈夫。ME Well, the detective that you work with, the big twist at the end is that he s the criminal. You re supposed to be working closely with this guy, and you don t find out till much later that he s actually the one behind it all. And that highlights one of the most important aspects of adventure and text games for me the turnaround point.江城:じゃあ‥‥一緒に行動する刑事が犯人という、ものすごい結末なんです。彼とずっと一緒に行動していくんですが、最後の最後にならないと真相はわかりません。テキストアドベンチャーゲームにおいて最も重要なことのひとつ、転換点を私に見せてくれたのです。In the Ace Attorney series you always have these surprising twists, sometimes two or three times in one case. You just never know what to expect. That s what keeps adventure games interesting for me.逆転シリーズにおいては、1つの事件の中で、2つや3つのこういった驚くべき逆転劇を見ることになります。そしてあなたは何が起こるか全く解らない。それが私にとって、アドベンチャーゲームの面白さです。1UP It s obviously a very different type of game, but another popular adventure game I m sure you ve spent some time with is Professor Layton.1UP:明らかに異なるタイプのゲームですが、もうひとつの有名なアドベンチャーゲームとしてレイトン教授があります。ME Yeah, I played the very first one. And, you re probably aware that the puzzles themselves are based on a much older book series in Japan called Mental Gymnastics. I never found just doing the puzzles themselves all that engaging, but I m just amazed that they were able to fit them into this story and make it interesting. It s good that it brings these types of puzzles to a wider audience.江城:ええ、第1作目はプレイしました。そして、パズル自体は思考型パズルと日本で呼ばれているものに似ていることにおそらく気がついたでしょう。私はパズル自体にはさほど興味がありませんでしたが、それをストーリーにうまく組み込んで面白くしていることに驚きました。多くの人々にこの種のパズルを体験してもらうことは良いことです。1UP Obviously, he s in the title, so Miles Edgeworth is this game s central character. After bringing in a new protagonist for the previous game, Apollo Justice, what made you decide to bring back this character as opposed to using someone new?1UP:タイトル(Ace Attorney Investigations Miles Edgeworth)通り、御剣怜侍がこのゲームの主役であることは明白です。前作で新主人公(王泥喜)を登場させたのに、他のキャラクターに戻すことを決めたのは?ME Well, we wanted to make a new game with new skills like logic and deduction, things like that. But we took a look at the character rankings in Japan and, next to Phoenix Wright, the next most popular character was Edgeworth. He s really quite popular, and so we thought that made him a good choice as the central character for this game.江城:私たちは論理と推論に基づく新しいゲームを創りたかったのです。日本での人気キャラクターを見ると、成歩堂の次に最も人気があるのは御剣でした。彼は本当に人気があります。そのため、このゲームでは、彼を主役にするのが良いと考えました。1UP Was there anything you and the team wanted to do with the game that you just weren t able to, because of time constraints or other technical hurdles?1UP:時間的制約や、技術的な問題で、あなたや開発チームができなかったことは?ME Actually, one of the things that the director and I had talked about was the Little Thief system. We d wanted to add a lot more features -- to make a bit more in-depth. But we just ran out of time and weren t able to integrate it as fully as we d wanted to. It s little more simplistic than we d originally envisioned, but that was just a problem with time.江城:実は、ディレクターと私が話し合っていたものの1つに、「ちょっとした泥棒システム」がありました。私たちはもっと多くの特徴を加えたかったのです――徹底的に。しかし、開発期間の問題で、完全にそれらを作ることができませんでした。元々私たちが想像していたものより多少安易ではありませんが、結局は時間の問題でした。1UP Is there anything you feel you ve learned from Ace Attorney Investigations that you ve been able to apply to your current project, Okamiden?1UP:逆転検事から学んだことが、あなたの今のプロジェクトである大神伝に生かされていますか?ME Well, I m also the producer on Okamiden, so the role itself is very similar. Ace Attorney was my first solo job as a producer, so a lot about learning games promotion, the timing of releasing information, keeping players interested. Various things like that about how to promote a game.江城:大神伝ではまたプロデューサーなので、役割そのものはとても似ています。逆転裁判は私の最初のソロでのプロデューサー活動で、ゲームのプロモーション、発売情報のタイミング、プレイヤーに興味をもってもらうことなど、様々なことを学びました。But a real learning moment came when we put together the first build of Investigations. We went around showing the game to the company, and we actually got a lot of negative reactions. So, we had to go back to the drawing board and do a lot of rethinking, redesigning, reconceptualizing.しかし、捜査方法の最初の構築をした時が、本当に学べた瞬間でした。私たちが会社にゲームを見せても、ネガティブな反応ばかりでした。私たちは制作に戻らなければならず、再考し、設計し直し、コンセプトを見直さなければなりませんでした。Talking with the director, we had to think about who Edgeworth is as a character. We realized that he s actually very logical. Originally the game was simply about visiting crime scenes and investigating, but when we instituted the Logic mechanic, that changed how the game plays completely.ディレクターと、御剣というキャラについて話し合いました。私たちは、彼が非常に論理的であると考えました。当初、ゲームは単に犯行現場を訪れ、調査するだけでした。しかし、ロジックシステムを考え出した時、ゲームの方向性は変わりました。1UP Did you ever consider brining the series over to another platform besides DS?1UP:シリーズをDS以外で発売することについては?ME From the beginning, we knew this would be a DS game. The previous games were all on DS, and there s just a natural flow to continue with DS. We never really considered trying it on any other system.江城:最初から、DSのゲームを創ることを考えていました。前作までは全てDSだったので、それが自然な流れでした。私たちは他のハードでの発売を全く考えませんでした。1UP Have you felt limited at all by the DS? With Nintendo iterating on its handheld so frequently, is there any functionality that you wish it would add to the system that you think would be great to use in a game?1UP:DSによって制限されることはありませんでしたか? 任天堂はしばしば携帯ゲーム機を出していますが、ゲームに使うためのシステムを加えて欲しいと思うことは?ME I m really not the type of person to think, Oh, I wish they had this, I wish they had that. I look at it realistically, I look at the specs. Then I think, What can we do with this? What kind of fun game can we create to take advantage of this machine the most? 江城:私は「これがあればいいのに、あれがあればいいのに」というタイプではありません。スペックを見て、考えます。「これをどうできるだろうか? このハードでどんな楽しいゲームを作れるだろうか?」I guess it goes back to my roots as a programmer, but I really would just want the system to have more memory, maybe a better video card. Stuff like that. Something so we can make the best looking game possible. It s not the most wishful thinking perhaps, but that s the way I look at it.私は、それがプログラマーとしての私のルーツに戻ると思います。ただ、より多くの容量、良いビデオカードがあれば良いとは思います。より良いものを作るために。1UP Going back to your roots, you ve held so many different positions in the industry, are there any moments in particular that stand out for you? What roles did you most enjoy?1UP:ゲーム業界で色々と異なるポジションを体験してきて、特に卓越していることは? どんな仕事が楽しかったですか?ME Starting out as a programmer for Capcom, it really was fun to be able to realize a planner s vision. A planner would come up to me and say, Here are the game s rules, or, Here are the designs. And it would be up to me to put it together and make it appear on the screen. That was really great, to immediately see these ideas take fruit and know that you re the one who brought these ideas to life.江城:カプコンではプログラマーとしてスタートして、それにはプランナーとしての展望を認識できる楽しさがありました。プランナーは「これがゲームのルールだ」とか、「これがデザインだ」と言ってきます。それらをまとめるのは私次第で、ディスプレイに映し出すことができます。それは面白いことでした。As a director, it s tough to be head of a team because you then take on responsibility for everything that the team does and all the decisions. If you decide to take the game in one direction instead of another, you have to live with those consequences. It s heavy and hard, but it s also good because you have a lot more influence over the game; you can put in things you want to put in. Of course it s not 100% about what you want. It s also about listening to the ideas and opinions of your team and being able to take all those ideas and make it into one solid game. Having everything come together, the realization of those things makes it all worth it.ディレクターとしては、チームの全ての責任と決定を引き受けるので、大変なことです。もしゲームの方向性を変えるなら、その結果に耐えなくてはなりません。それは重く、厳しいです。しかし、それはまた、ゲームに良い影響を与えることにもなります。もちろん、期待していたことの100%がかなうわけではないのですが。それはまた、チームの考えや意見を聞いて、決定し、ひとつの凄いゲームが出来ることでもあります。これらの実現は素晴らしい価値があります。Being a producer is a double-edged sword. It s hard, but it s a very enjoyable at the same time. You get to stand in a different position from the director, and you get to watch a game grow from the first drafts to the very end. It s interesting to be able to manage and oversee everything in that respect. And being able to promote the game, getting out to the various media outlets is a lot of fun too. Learning how to excite people about your particular title. It s trying, but very compelling at the same time.プロデューサーであることは、諸刃の剣です。大変でもあり、楽しくもあります。ディレクターとは異なる立ち位置になり、ゲームが最初の草案から、完成まで成長していくのを見ていくことになります。その点で、全てを管理し、監督していくことは面白いです。そして、ゲームの広告や、色々なメディアに出演することは、楽しみでもあります。自分の作っているものを人々に喜んでもらう方法を学ぶこと。それは挑戦的で、同時に魅力的でもあります。1UP I know you don t control marketing in America directly, but the Ace Attorney series in particular has always had wonderful pre-order bonueses for Japan in the past. But when those same games come Stateside, it s usually without as much fanfare and with just the standalone software. Since you ve been working on the past few titles directly, how do you think the company s approach has changed with each title?1UP:私はあなたがアメリカで直接販売管理をしないということは知っていますが、逆転シリーズは過去、日本で素晴らしい予約特典がありました。しかしアメリカではそれがありません。過去直接少しのタイトルに関わり、あなたは、会社がどのように各ゲームの広告方法を変更したのだと思いますか?ME We ve definitely made some changes in how we promote things overseas versus in Japan. For example, in Japan we focus mainly on interviews with the regular press outlets like Famitsu. But in the West, we ve found going directly to the community has been very important. For Ace Attorney, we recently did a live Q A over the Capcom UStream page. It s something that s always changing, and we definitely don t have the perfect formula right now, but we re always listening to the community.江城:確かに、私たちが日本で発売したものを海外で宣伝する場合、多少方法が変わりました。例えば、日本では、宣伝するには私たちはファミ通のようなプレスの発表で、主にインタビューに集中しています。しかし海外では、私たちは、直接コミュニティで呼びかけることが重要であることがわかりました。逆転シリーズのために、私たちはカプコンのUStreamでQ Aをライブで行いました。常に色々なことが変化しています。今私たちは完全な方法というものを持ちませんが、常にコミュニティを開いています。1UP Do you think there are any particular differences between fans of the Ace Attorney series in the East and the West?1UP:日本と海外では、ファンに違いがあると思いますか?ME Actually, I went to ComicCon last year, and it was really great to see so many of our American fans in person. I don t think there s a difference between the two, or between any other countries in that respect; everyone who enjoys the games seems to enjoy them for the same reasons.江城:去年ComicConに行って、直接アメリカのファンに会えたことは、とても素晴らしいことでした。私は、国の間で違いがあるとは思いません。誰もが、同じ理由でゲームを楽しんでいるのです。1UP Well, thank you so much for taking the time to come out and talk with us. We know a lot of fans out there are eagerly awaiting the next game s release later this month.1UP:ありがとうございました。海外ファンは、今月の発売を熱心に待っています。ME Thank you very much.江城:ありがとう。 ▲ページ上へ▲
https://w.atwiki.jp/sampleisbest/pages/588.html
開発環境 Microsoft Visual Studio Community 2019 実行環境 Microsoft Windows 10 Home (64bit) プロジェクト テンプレート C++ 空のプロジェクト プロジェクト名 dx9sample1 参考 座標変換済み頂点で2D板ポリゴンを描画:サンプルプログラム プロジェクト構成プロパティ リンカ―/システム/サブシステム Windows (/SUBSYSTEM WINDOWS) dx9sample1.cpp #pragma comment(lib, "d3d9") #include Windows.h #include d3d9.h #define SAFE_RELEASE(p) if(p){p- Release();p=NULL;} struct CUSTOM_VTX { float x, y, z, w; DWORD color; }; #define CUSTOM_FVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE) // 外部変数 LPDIRECT3D9 pD3D; LPDIRECT3DDEVICE9 pD3DDev; // 関数プロトタイプ宣言 LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam); HWND InitWindow(HINSTANCE hInstance, int nCmdShow); HRESULT InitD3D(HWND hWnd); void Cleanup(); int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int nCmdShow) { HWND hWnd = InitWindow(hInstance, nCmdShow); if (!hWnd) return -1; HRESULT hr = InitD3D(hWnd); if (FAILED(hr)) { Cleanup(); return -1; } ShowWindow(hWnd, nCmdShow); CUSTOM_VTX vtx[] = { { 200, 200, 0, 1, 0xff0000ff }, { 200, 0, 0, 1, 0xff00ff00 }, { 400, 200, 0, 1, 0xffff0000 }, }; MSG msg = { 0 }; while (msg.message != WM_QUIT) { if (PeekMessage( msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage( msg); DispatchMessage( msg); } else { pD3DDev- Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1, 0); pD3DDev- BeginScene(); pD3DDev- SetFVF(CUSTOM_FVF); pD3DDev- DrawPrimitiveUP(D3DPT_TRIANGLELIST, 1, vtx, sizeof CUSTOM_VTX); pD3DDev- EndScene(); pD3DDev- Present(NULL, NULL, NULL, NULL); } } Cleanup(); return msg.wParam; } LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch (msg) { case WM_DESTROY PostQuitMessage(0); return 0; } return DefWindowProc(hWnd, msg, wParam, lParam); } HWND InitWindow(HINSTANCE hInstance, int nCmdShow) { WNDCLASSEX wc = { sizeof WNDCLASSEX }; wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.hInstance = hInstance; wc.hbrBackground = HBRUSH(COLOR_WINDOW + 1); wc.lpszClassName = L"dx9sample1"; if (!RegisterClassEx( wc)) return NULL; DWORD deStyle = WS_OVERLAPPEDWINDOW ^ WS_MAXIMIZEBOX ^ WS_THICKFRAME; RECT rc = { 0, 0, 400, 400 }; AdjustWindowRect( rc, deStyle, FALSE); HWND hWnd = CreateWindow( wc.lpszClassName, L"dx9sample1", deStyle, CW_USEDEFAULT, 0, rc.right - rc.left, rc.bottom - rc.top, NULL, NULL, hInstance, NULL); return hWnd; } HRESULT InitD3D(HWND hWnd) { HRESULT hr; pD3D = Direct3DCreate9(D3D_SDK_VERSION); if (!pD3D) return E_FAIL; D3DPRESENT_PARAMETERS d3dpp = { 0 }; d3dpp.BackBufferFormat = D3DFMT_UNKNOWN; d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.Windowed = TRUE; d3dpp.AutoDepthStencilFormat = D3DFMT_UNKNOWN; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; hr = pD3D- CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, d3dpp, pD3DDev); if (FAILED(hr)) return hr; return S_OK; } void Cleanup() { SAFE_RELEASE(pD3DDev); SAFE_RELEASE(pD3D); }
https://w.atwiki.jp/civilizationv/pages/20.html
#freeze #nofollow #norelated テキスト整形のルール 通常は入力した文章がそのまま出力されます。 HTMLのタグは効果がありません。書かれた文章はそのまま(「 font color="red" text /font 」といった形のまま)表示されます 段落と段落の区切りには空行をはさんで下さい。空行をはさまず、連続している複数の行は同じ段落と解釈されます (連結して表示されます) これに加えて、特定のルールによるテキスト整形を行うことができます。以下では、プラグインについてはよく使われるものだけを簡略に説明しています。プラグインのオプションなど詳細な説明については PukiWiki/1.4/Manual/Plugin を参照してください。 テキスト整形のルール [#oca54177] ブロック要素 [#vd593893] 段落 [#n6691793] 引用文 [#af1781b1] リスト構造 [#q8abd9a8] 整形済みテキスト [#g72f3a72] 表組み [#k7c49df4] CSV形式の表組み [#zc726b7e] 見出し [#z15343da] 目次 [#l6dfa631] 左寄せ・センタリング・右寄せ [#bbc1f21c] 水平線 [#s9799d2c] 行間開け [#j2656808] 添付ファイル・画像の貼り付け [#p1971296] テキストの回り込みの解除 [#a800a528] フォーム [#x23849ca] インライン要素 [#l7110f11] 文字列 [#bd24e4ad] 改行 [#f383c24f] 強調・斜体 [#n38a029f] 文字サイズ [#t513b12d] 文字色 [#sf40816a] 取消線 [#r81ec79f] 注釈 [#s21cf12e] 添付ファイル・画像の貼り付け [#v181e939] ルビ構造 [#j137cd8e] アンカーの設定 [#mb297616] カウンタ表示 [#h7beb6ac] オンライン表示 [#ab42f827] バージョン表示 [#f09f9e4b] WikiName [#u8188184] ページ名 [#gce935d9] InterWiki [#g0dec0fe] リンク [#bd6593e1] エイリアス [#u1026558] タブコード [#d2561bef] ページ名置換文字 [#hc95e608] 日時置換文字 [#f03aaf0a] 文字参照文字 [#oc8e0c4c] 数値参照文字 [#ibd49862] その他 [#w8d0fa5a] コメント行 [#fa693c95] ブロック要素 ブロック要素は、インライン要素と他のブロック要素を子要素にすることができます。ただし、段落、見出し、水平線、#から始まるブロック要素は他のブロック要素を子要素にすることはできません。 空行はトップレベルのブロック要素の区切りになります。空行が現われると、すべてのブロック要素は終了します。 ブロック要素は、他のブロック要素の子要素になることができます。 リスト構造と引用文は他のブロック要素を子要素にすることができます。子要素のブロック要素は親要素のレベルに従ってインデントされて表示されます。空行が現われるとブロック要素は終了します。 リスト構造と引用文のネストには3段階のレベルがありますが、リスト構造のレベルと引用文のレベルは独立しています。従って、リスト構造を引用文の子要素にする場合や引用文をリスト構造の子要素にする場合は、レベルを1段階増やさずに記述します。リスト構造を他のリスト構造の子要素にする場合や引用文を他の引用文の子要素にする場合は、レベルを1段階増やして記述します。 他のブロック要素の子要素となっている引用文から脱出するとき、親のブロック要素を継続したい場合は行頭に 、 、 を記述します。 で第1レベルの引用文から、 で第2レベルの引用文から、 で第3レベルの引用文から脱出します。空行を記述すると引用文だけでなく親のブロック要素からも脱出します。 ブロック要素となるプラグインは#〜の形式になっています。(*1) 段落 インライン要素 他のブロック要素を明示しない限り、段落となります。 ~ インライン要素 行頭で ~ を指定した場合も段落になります。行頭書式の文字(~、-、+、 、 、|、#、//)を通常の文字として段落の先頭に書きたい場合は、行頭に~を記述して書くことができます。 段落の先頭は1文字分字下げされます。但し、番号なしリスト構造、番号付きリスト構造、引用文内の段落では字下げされません。定義リスト内の段落の先頭は1文字分字下げされます。 段落は、新たなブロック要素が現われるまで継続します。 段落は、他のブロック要素の子要素になることができます。 段落は、他のブロック要素を子要素にすることはできません。 引用文 インライン要素 行頭で を指定すると、引用文になります。引用文は 、 、 の3レベルあります。 引用文の中は、ブロック要素を明示しない限り、段落となります。 引用文は、空行が現われるまで継続します。 引用文内の段落は、新たな引用文またはブロック要素が現われるまで継続します。 引用文は、他のブロック要素の子要素になることができます。他の引用文の子要素にする場合は、レベルを1段増やして記述します。リスト構造の子要素にする場合はレベルを1段増やさずに記述します。 引用文は、他のブロック要素を子要素にすることができます。引用文の子要素となるリスト構造はレベルを1段増やさずに記述します。 リスト構造内の引用文から脱出する場合で、リスト構造を継続する場合は、 、 、 を行頭に記述します。 リスト構造 - インライン要素 行頭で - を指定すると、番号なしリストになります。番号なしリストは -、--、--- の3レベルあります。 番号なしリストは、他のブロック要素の子要素になることができます。他のリスト構造の子要素にする場合は、レベルを1段増やして記述します。引用文の子要素にする場合は、レベルを増やさずに記述します。 -の直後に ~を記述すると段落を子要素にすることができます。 番号なしリストは、リストの先頭がインライン要素または段落である場合に限り、リストの次の行に他のブロック要素を記述することで、他のブロック要素を子要素にすることができます。 + インライン要素 行頭で + を指定すると、番号付きリストになります。番号付きリストは +、++、+++ の3レベルあります。 番号付きリストは、他のブロック要素の子要素になることができます。他のリスト構造の子要素にする場合は、レベルを1段増やして記述します。引用文の子要素にする場合は、レベルを増やさずに記述します。 + の直後に ~ を記述すると段落を子要素にすることができます。 番号付きリストは、リストの先頭がインライン要素または段落である場合に限り、リストの次の行に他のブロック要素を記述することで、他のブロック要素を子要素にすることができます。 定義語 | 説明文 行頭を で始め、| 記号で区切ると、定義リストになります。定義リストは 、 、 の3段階あります。定義リストの定義語、説明文は省略することができます。複数の連続した定義リストを記述し、2つ目以降の定義語を省略することで1つの定義語に対する複数の説明文を記述することができます。 行中に | がないと定義リストにはなりません。 定義語・説明文は、インライン要素のみ記述することができます。 定義リストは、他のブロック要素の子要素になることができます。他のリスト構造の子要素にする場合は、レベルを1段増やして記述します。引用文の子要素にする場合は、レベルを増やさずに記述します。 | の直後に ~ を記述すると段落を子要素にすることができます。 定義リストは、定義リストの次の行に他のブロック要素を記述することで、他のブロック要素を子要素にすることができます。 整形済みテキスト 行頭が半角空白で始まる行は整形済みテキストとなります。行の自動折り返しは行なわれません。 整形済みテキストは、他のブロック要素の子要素になることができます。 整形済みテキストは、他のブロック要素を子要素にすることができません。 整形済みテキストは、すべての子要素を文字列として扱います。 表組み | インライン要素 | インライン要素 | 行頭から | でインライン要素を区切ることで表組みになります。 各要素の先頭に下記の記述子を指定できます。 LEFT CENTER RIGHT BGCOLOR(色) COLOR(色) SIZE(サイズ) 要素の表示位置及び背景色・文字色・文字サイズ(px単位)を指定します。デフォルトは左寄せになります。 表組みの 各セルの要素の配置に 関するサンプル 左寄せ センタリング 右寄せ 右寄せ 左寄せ センタリング 行末にcを記述すると、書式指定行となります。書式指定行では、次の記述子が指定できます。 LEFT CENTER RIGHT BGCOLOR(色) COLOR(色) SIZE(サイズ) 記述子の後ろに数値を記述すると、セル幅がpx単位で指定できます。 行末にhを記述すると、ヘッダ行(thead)になります。 行末にfを記述すると、フッタ行(tfoot)になります。 セル内のインライン要素の先頭に~を付けると、ヘッダ(th)になります。 セル内に を単独で記述すると右のセルと連結します(colspan)。 セル内に ~ を単独で記述すると上のセルと連結します(rowspan)。 表組みは、他のブロック要素の子要素になることができます。 表組みは、他のブロック要素を子要素にすることができません。 CSV形式の表組み ,データ,データ,… 行頭でカンマ(,)を記述し、インライン要素をカンマ区切りで記述すると表組みになります。 インライン要素はダブルクォーテーション(")で囲むことができます。ダブルクォーテーションで囲むことで、カンマ(,)を含むインライン要素を記述できます。 ダブルクォーテーション(")で囲んだデータの中で、ダブルクォーテーションを2つ("")続けることで、ダブルクォーテーション(")を含むインライン要素を記述できます。 インライン要素の代わりにイコールを2つ(==)記述すると、colspanを意味します。 インライン要素の左に1つ以上の半角空白文字を記述すると右寄せに、インライン要素の左右に1つ以上の半角空白文字を記述するとセンタリングになります。 表組みは、他のブロック要素の子要素になることができます。 表組みは、他のブロック要素を子要素にすることができません。 見出し * インライン要素 行頭で * を記述すると、見出しになります。見出しは *、**、*** の3段階あります。 見出しは、他のブロック要素の子要素になることはできません。見出しが現われると他のブロック要素は終了します。 見出しは、他のブロック要素を子要素にすることはできません。 目次 #contents 行頭で #contents を記述すると、見出しに基づいて目次を作成します。一般的に #contents はページの最初のほうに記述します。 目次は、他のブロック要素の子要素になることができますが、トップレベルに設置することを前提に左マージンを設定してありますので、他のブロック要素の子要素にはしないでください。 目次は、他のブロック要素を子要素にすることはできません。 左寄せ・センタリング・右寄せ LEFT インライン要素 CENTER インライン要素 RIGHT インライン要素 行頭で LEFT 、 CENTER 、 RIGHT を記述すると、インライン要素が左寄せ、センタリング、右寄せされます。 LEFT 、CENTER 、RIGHT は、他のブロック要素の子要素になることができます。 LEFT 、CENTER 、RIGHT は、他のブロック要素を子要素にすることができません。 水平線 --------------------------------------------- 行頭で4つ以上の - を書くと水平線になります。 水平線は、他のブロック要素の子要素になることはできません。水平線が現われると他のブロック要素は終了します。 水平線は、他のブロック要素を子要素にすることはできません。 #hr 行頭で #hr を記述すると、区切り線になります。区切り線は上位のブロック要素の幅の60%の長さの水平線がセンタリングされて引かれます。 区切り線は、他のブロック要素の子要素になることができます。 区切り線は、他のブロック要素を子要素にすることはできません。 行間開け #br 行頭で #br を記述すると、ブロック要素間またはブロック要素内で行間を開けることができます(*2)。 行間開けは、他のブロック要素の子要素になることができます。 行間開けは、他のブロック要素を子要素にすることはできません。 添付ファイル・画像の貼り付け #ref(添付ファイル名) #ref(ファイルのURL) 行頭で #ref を記述すると、添付ファイルまたは指定されたURLにあるファイルへのリンクを貼り付けることができます。ファイルが画像ファイルの場合は、その画像を表示します。 #ref には、カンマで区切って下記のパラメタを指定できます。パラメタを省略した場合はデフォルト値となります。 添付ファイルのページ 添付ファイルが存在するページ名を指定します。デフォルトは現在のページです。 このパラメタを指定する場合は、添付ファイル名の次に記述します。 left center right ファイルへのリンク・画像を表示する位置を指定します。デフォルトではセンタリングされます。 wrap nowrap ファイルへのリンク・画像を枠で囲むかどうかを指定します。デフォルトは囲みません。 around テキストの回り込みを指定します。デフォルトでは回り込みを行ないません。 nolink デフォルトでは添付ファイルへのリンクが張られますが、nolinkを指定するとリンクを張りません。 代替文字列 ファイル名の代わりに表示する文字列や画像の代替文字列を指定できます。指定しない場合は、ファイル名になります。 代替文字列には文字列以外のインライン要素を含めることはできません。ページ名、文字列以外のインライン要素を記述しても文字列として扱われます。 このパラメタを指定する場合は、最後に記述します。 #refは、他のブロック要素の子要素になることができます。 #refは、他のブロック要素を子要素にすることはできません。 テキストの回り込みの解除 #clear 行頭で #clear を記述すると、 #ref で指定したテキストの回り込みを解除します。 #clear を指定しなくても、記事の末尾でテキストの回り込みが自動的に解除されます。 #clearは、他のブロック要素の子要素になることができます。 #clearは、他のブロック要素を子要素にすることができません。 フォーム #comment 行頭で #comment を記述すると、コメントを挿入するためのフォームが埋め込まれます。 #commentは、他のブロック要素の子要素になることができますが、トップレベルに設置することを前提に左マージンを設定してありますので、他のブロック要素の子要素にはしないでください。 #commentは、他のブロック要素を子要素にすることはできません。 #pcomment 行頭で #pcomment を記述すると、コメントを挿入するためのフォームが埋め込まれます。 #comment とは異なり、コメントは別ページに記録されます。また、コメントに対するレスポンスを階層状に表示します。 #pcommentは、他のブロック要素の子要素になることができますが、トップレベルに設置することを前提に左マージンを設定してありますので、他のブロック要素の子要素にはしないでください。 #pcommentは、他のブロック要素を子要素にすることはできません。 #article 行頭で#articleを記述すると、簡易掲示板のフォームが埋め込まれます。 #articleは、他のブロック要素の子要素になることができますが、トップレベルに設置することを前提に左マージンを設定してありますので、他のブロック要素の子要素にはしないでください。 #articleは、他のブロック要素を子要素にすることはできません。 #vote(選択肢1,選択肢2,...) 行頭で #vote を記述すると、簡易投票フォームが埋め込まれます。 選択肢は文字列、ページ名、InterWiki、リンクを含めることができます。その他のインライン要素を含めることができません。 #voteは、他のブロック要素の子要素になることができますが、トップレベルに設置することを前提に左マージンを設定してありますので、他のブロック要素の子要素にはしないでください。 #voteは、他のブロック要素を子要素にすることはできません。 インライン要素 インライン要素は、必ずブロック要素の子要素になっています。 行頭書式でブロック要素を明示しない場合は、段落の子要素となります。 行頭書式でブロック要素を明示した場合は、指定したブロック要素の子要素になります。 特定のインライン要素は、他のインライン要素を子要素にすることができます。 インライン要素はブロック要素を子要素にすることはできません。 インライン要素となるプラグイン及びユーザー定義は 〜; の形式になっています。 インライン要素となるプラグインに対してオプションと子要素を指定する場合は、 プラグイン名(オプション){子要素}; の形式になります。 文字列 文字列 文字列はインライン要素です。 文字列は、他のインライン要素の子要素になることができます。 文字列は、他のインライン要素を子要素にすることができません。 改行 インライン要素~ 行末に~を書くと行末改行になります。行末改行はブロック要素内での改行になります。 行末改行の次の行の行頭書式は無効になり、文字列として扱われます。 行末改行は、他のインライン要素の子要素になることはできません。 行末改行は、他のインライン要素を子要素にすることはできません。 行末改行は、定義リストの定義語、表組みの要素、#で始まるブロック要素のパラメタの中では使用できません。 br; 行中に br; を書くと、そこで改行されます。行末の ~ と違い、定義リストの定義語や表組の要素、# で始まるブロック要素のパラメタの中でも使用できます。 行中改行は、他のインライン要素の子要素になることができます。 行中改行は、他のインライン要素を子要素にすることはできません。 強調・斜体 インライン要素 行中のインライン要素を #39; #39; ではさむと、インライン要素が 強調表示 になります。 強調は、他のインライン要素の子要素になることができます。 強調は、他のインライン要素を子要素にすることができます。 インライン要素 行中のインライン要素を #39; #39; #39; ではさむと、インライン要素が 斜体表示 になります。 斜体は、他のインライン要素の子要素になることができます。 斜体は、他のインライン要素を子要素にすることができます。 文字サイズ size(サイズ){インライン要素}; 行中に size を書くとインライン要素の文字サイズを指定することができます。サイズはピクセル単位(px)で指定します。例えば20を指定すると、20ピクセルの文字の大きさになります。 文字サイズは、他のインライン要素の子要素になることができます。 文字サイズは、他のインライン要素を子要素にすることができます。 文字色 color(文字色,背景色){インライン要素}; 行中に color と書くとインライン要素の 文字色 と 背景色 を指定することができます。背景色は省略できます。 色の指定は、次のいずれかの形式で行ないます。 色を意味するキーワード(red, blueなど) #16進数6桁 #16進数3桁 文字色は、他のインライン要素の子要素になることができます。 文字色は、他のインライン要素を子要素にすることができます。 取消線 %%インライン要素%% 行中のインライン要素を #37; #37;ではさむと、インライン要素に取消線が付きます。 取消線は、他のインライン要素の子要素になることができます。 取消線は、他のインライン要素を子要素にすることができます。 注釈 ((インライン要素)) 行中でインライン要素を #40; #40; と #41; #41; ではさむと、注釈(*3)が作成され、行中に注釈へのリンクが貼られます。 注釈は、他のインライン要素の子要素になることができます。親要素は注釈文ではなく、注釈へのリンクに反映されます。 注釈は、他のインライン要素を子要素にすることができます。子要素は注釈文に反映されます。 添付ファイル・画像の貼り付け ref(添付ファイル名); ref(ファイルのURL); 行中で ref を記述すると、添付ファイルまたは指定されたURLにあるファイルへのリンクを貼り付けることができます。ファイルが画像ファイルの場合は、その画像を表示します。 ref には、カンマで区切って下記のパラメタを指定できます。パラメタを省略した場合はデフォルト値となります。 添付ファイルのページ 添付ファイルが存在するページ名を指定します。デフォルトは現在のページです。 このパラメタを指定する場合は、添付ファイル名の次に記述します。 nolink デフォルトでは添付ファイルへのリンクが張られますが、nolink を指定するとリンクを張りません。 代替文字列 ファイル名の代わりに表示する文字列や画像の代替文字列を指定できます。指定しない場合は、ファイル名になります。 代替文字列には文字列以外のインライン要素を含めることはできません。ページ名、文字列以外のインライン要素を記述しても文字列として扱われます。 このパラメタを指定する場合は、最後に記述します。 ref は、他のインライン要素の子要素になることができます。 ref は、他のインライン要素を子要素にはできません。 ルビ構造 ruby(ルビ){インライン要素}; 行中で ruby を書くとインライン要素に対するルビをふることができます。ルビに対応していないブラウザではルビが本文中に ( と ) に囲まれて表示されます。 ルビ構造のルビにはインライン要素を記述します。ただし、ルビの特性上、期待通りの表示になるとは限りません。 ルビ構造は、他のインライン要素の子要素になることができます。 ルビ構造は、他のインライン要素を子要素にすることができます。 ルビ構造をルビ構造の子要素にはできません(ネストはできません)。 注釈内や文字サイズを小さくしている部分での使用は、ルビが判読できなくなるので避けてください。 アンカーの設定 aname(アンカー名); aname(アンカー名){インライン要素}; 行中で aname を記述するとリンクのアンカーを設定することができます。リンクの飛び先にしたい位置に記述します。 アンカー名は、半角アルファベットから始まる半角アルファベット・数字・ハイフン・アンダースコアからなる文字列を指定します。 アンカー名の中には、全角文字や半角空白文字、半角記号を含めることはできません。 アンカー設定は、他のインライン要素の子要素になることができます。 アンカー設定は、他のインライン要素を子要素にすることができます。 カウンタ表示 counter; counter(オプション); 行中で counter を記述するとそのページにアクセスした人の数を表示することができます。 counter には次のオプションを指定できます。オプションを省略した場合はtotalが指定されたものとみなされます。 today 今日のアクセス数を表示します。 yesterday 昨日のアクセス数を表示します。 total アクセス総数を表示します。 カウンタ表示は、他のインライン要素の子要素になることができます。 カウンタ表示は、他のインライン要素を子要素にはできません。 オンライン表示 online; 行中で online を記述すると現在アクセス中の人数を表示することができます。 オンライン表示は、他のインライン要素の子要素になることができます。 オンライン表示は、他のインライン要素を子要素にはできません。 バージョン表示 version; 行中で version を記述するとPukiWikiのバージョンを表示することができます。 バージョン表示は、他のインライン要素の子要素になることができます。 バージョン表示は、他のインライン要素を子要素にはできません。 WikiName WikiName 行中で、1つ以上の大文字→1つ以上の小文字→1つ以上の大文字→1つ以上の小文字の組合わせからなる半角//文字列はWikiNameになります。 WikiNameの中には、全角文字や半角空白文字、記号、数字を含めることはできません。 WikiNameは、PukiWiki内のページ名になります。すでに存在するページであればそのページへのリンクが自動的に貼られます。存在しない場合はWikiNameの後ろに?が自動的に付き、そのページを新規作成するためのリンクが貼られます。 WikiNameは、他のインライン要素の子要素になることができます。 WikiNameは、他のインライン要素を子要素にはできません。 ページ名 [[ぷきうぃき]] 行中で #91; #91; と #93; #93; で囲まれた文字列はページ名になります。 ページ名の中には、全角文字、記号、数字、半角空白文字を含めることができます。 ページ名の中には、"# を含めることはできません。 すでに存在するページであればそのページへのリンクが自動的に貼られます。存在しない場合はページ名の後ろに?が自動的に付き、そのページを新規作成するためのリンクが貼られます。 [[ページ名#アンカー名]] ページ名にアンカー名をつけることもできます。 ページ名は、他のインライン要素の子要素になることができます。 ページ名は、他のインライン要素を子要素にはできません。 InterWiki [[InterWikiName ページ名]] 行中のページ名形式の文字列の中で、 で2つの文字列を区切るとInterWikiになります。 の前にはInterWikiNameのページで定義したInterWikiNameを、 の後ろにはページ名を記述します。 [[InterWikiName ページ名#アンカー名]] ページ名の後ろにアンカー名をつけることもできます。 InterWikiNameの中には、全角文字を含めることができます。 InterWikiNameの中には、半角空白文字を含めるができます。 InterWikiは、他のインライン要素の子要素になることができます。 InterWikiは、他のインライン要素を子要素にはできません。 リンク [[リンク名 URL]] 行中のInterWikiNameの形式の文字列の中で、 の前に任意のリンク名を、 の後ろにURLを記述すると、そのリンク名でURLに対するリンクを貼ることができます。 リンク名には、全角文字や半角空白文字を含めることができます。メールアドレスを指定する場合は、mailto を書かずにアドレスだけを記述します。 http //www.example.com/ https //www.example.com/ ftp //ftp.example.com/ news //news.example.com/ foo@example.com 行中に直接、URLを記述した場合は自動的にそのURLに対するリンクが貼られます。 記述したURLが画像ファイルである場合は、その画像を表示します。 リンクは、他のインライン要素の子要素になることができます。 リンクは、他のインライン要素を子要素にはできません。 エイリアス [[エイリアス名 ページ名]] 行中のページ名形式の文字列の中で、 で2つの文字列を区切るとエイリアスになります。 の前にはエイリアス名を、 の後ろにはページ名を記述します。 エイリアスはPukiWiki内のページ名とは別のエイリアス名で、指定したページへのリンクを貼ります。 [[エイリアス名 ページ名#アンカー名]] [[エイリアス名 #アンカー名]] ページ名にアンカー名を付け加えてアンカーへのリンクを貼ることができます。ページ名とアンカー名の間には#をつけます。カレントページのアンカーへリンクを貼る場合はページ名を省略することができます。 [[エイリアス名 http //www.example.com/]] [[エイリアス名 https //www.example.com/]] [[エイリアス名 ftp //ftp.example.com/]] [[エイリアス名 news //news.example.com/]] [[エイリアス名 foo@example.com]] [[エイリアス名 InterWikiName ページ名]] [[エイリアス名 InterWikiName ページ名#アンカー名]] エイリアスをURLやInterWikiと組み合わせることもできます。 [[エイリアス名 http //www.example.com/]] [[エイリアス名 https //www.example.com/]] [[エイリアス名 ftp //ftp.example.com/]] [[エイリアス名 news //news.example.com/]] [[エイリアス名 foo@example.com]] URLを指定する場合は、 の代わりに も使用できます。 エイリアス名の中には、全角文字を含めることができます。 エイリアス名の中には、半角空白文字を含めることができます。 階層化されたページでは、ページ名を相対指定することができます。 エイリアスは、他のインライン要素の子要素になることができます。 エイリアスは、他のインライン要素を子要素にできます。 タブコード t; 行中で t; と書くと、タブコードに置換されます。 通常、フォーム内ではキーボードからタブコードを直接入力できない(*4)ので、タブコードを入力したい位置に t;を記述すると、保存時にタブコードに置換します。 タブコードは、記事が書き込まれるときに置換されて記録されます。 タブコードは、他のインライン要素の子要素になることができます。 タブコードは、他のインライン要素を子要素にはできません。 ページ名置換文字 page; fpage; 行中で page; 及び fpage; と書くと、編集中のページ名に置換されます。ページ名が階層化されたページで「hogehoge/hoge」となっている場合、 page; は「hoge」に、 fpage; は「hogehoge/hoge」に置換されます。階層化されていないページでは、 page; も fpage; も同じになります。 ページ名置換文字は、記事が書き込まれるときに置換されて記録されます。 ページ名置換文字は、他のインライン要素の子要素になることができます。 ページ名置換文字は、他のインライン要素を子要素にはできません。 日時置換文字 date; time; now; 行中で date; と書くと、更新時の日付に置換されます 行中で time; と書くと、更新時の時刻に置換されます 行中で now; と書くと、更新時の日時に置換されます date? time? now? PukiWiki 1.3系との後方互換性のために、 date #63;、 time #63;、 now #63; についても使用できるようにしてあります。 date;、 time;、 now;は、記事が書き込まれるときに置換されて記録されます。 date;、 time;、 now;は、他のインライン要素の子要素になることができます。 date;、 time;、 now;は、他のインライン要素を子要素にはできません。 _date; _time; _now; 行中で _date; と書くと、表示時の日付に置換されて出力されます。 行中で _time; と書くと、表示時の時刻に置換されて出力されます。 行中で _now; と書くと、表示時の日時に置換されて出力されます。 lastmod; lastmod(ページ名); 行中で lastmod; と書くと、そのページの最終更新日時に置換されて出力されます。 ページ名を指定すると、その指定されたページの最終更新日時に置換されて出力されます。 _date;、 _time;、 _now;、 lastmod;は、記事が表示されるときに置換されて出力されます。 _date;、 _time;、 _now;、 lastmod;は、他のインライン要素の子要素になることができます。 _date;、 _time;、 _now;、 lastmod;は、他のインライン要素を子要素にはできません。 文字参照文字 文字参照は、SGMLで定義されている文字参照文字( copy;や reg;など)のほか、下記の独自の文字参照文字が使用できます。 heart; smile; bigsmile; huh; oh; wink; sad; worried; 行中で heart;と書くと、ハートマーク heart に置換されて出力されます。 行中で smile;と書くと、 smile に置換されて出力されます。 行中で bigsmile;と書くと、 bigsmile に置換されて出力されます。 行中で huh;と書くと、 huh に置換されて出力されます。 行中で oh;と書くと、 oh に置換されて出力されます。 行中で wink;と書くと、 wink に置換されて出力されます。 行中で sad;と書くと、 sad に置換されて出力されます。 行中で worried;と書くと、 worried に置換されて出力されます。 文字参照文字は、表示されるときに置換されます。 文字参照文字は、他のインライン要素の子要素になることができます。 文字参照文字は、他のインライン要素を子要素にはできません。 数値参照文字 #10進数; #x16進数; 行中で # と ; の間に10進数を、 #x と ;の間に16進数を書くと、Unicodeを数値参照して表示します。キーボードから直接入力できない文字やJIS第3水準・第4水準の文字などの表示に使用します。たとえば、内田百 #38290;と入力すると、内田百 #38290;と表示されます。 数値参照文字は、表示されるときに置換されます。 数値参照文字は、他のインライン要素の子要素になることができます。 数値参照文字は、他のインライン要素を子要素にはできません。 16進数は半角小文字で指定する必要があります(XHTML 1.0 第2版から小文字に限定されました)。 その他 コメント行 // コメント 行頭で // を指定すると、コメント行になります。コメント行は出力されない行です。 コメント行は、他の要素と無関係に行単位でどの位置にも記述できます。 コメント行は、前後の他の要素に何ら影響を及ぼしません。